Перейти к основному содержимому

Чек-лист самопроверки

Разработчику Аналитику Тестировщику
Архитектору Инженеру

Чек-лист самопроверки

  1. Могу ли я объяснить разницу между классом и объектом?
  2. Понимаю ли я, что такое экземпляр класса?
  3. Знаю ли я, как создать объект в Python, Java и C#?
  4. Могу ли я объяснить, что такое ссылка на объект?
  5. Понимаю ли я, чем отличается переменная от объекта?
  6. Знаю ли я, что такое атрибуты и методы объекта?
  7. Могу ли я привести пример поля и свойства в одном из языков?
  8. Понимаю ли я разницу между полем и свойством?
  9. Знаю ли я, как работают геттеры и сеттеры?
  10. Могу ли я объяснить, зачем нужны автоматические свойства?
  11. Понимаю ли я, что такое иммутабельный объект?
  12. Знаю ли я, что такое конструктор и зачем он нужен?
  13. Могу ли я описать разные виды конструкторов (по умолчанию, параметризованный, копирования)?
  14. Понимаю ли я, что такое сигнатура метода?
  15. Знаю ли я, чем метод отличается от обычной функции?
  16. Могу ли я объяснить, что такое абстракция в ООП?
  17. Понимаю ли я, зачем нужны абстрактные классы?
  18. Знаю ли я, как объявить абстрактный метод?
  19. Могу ли я привести пример использования интерфейса?
  20. Понимаю ли я разницу между абстрактным классом и интерфейсом?
  21. Знаю ли я, что такое инкапсуляция?
  22. Могу ли я объяснить назначение модификатора private?
  23. Понимаю ли я, когда следует использовать protected?
  24. Знаю ли я, что делает модификатор public?
  25. Могу ли я объяснить, зачем скрывать поля и открывать только методы?
  26. Понимаю ли я, что такое наследование?
  27. Знаю ли я, как объявить подкласс в Python, Java и C#?
  28. Могу ли я объяснить, что наследуется от родительского класса?
  29. Понимаю ли я, зачем использовать наследование вместо дублирования кода?
  30. Знаю ли я, что такое множественное наследование и почему оно проблематично?
  31. Могу ли я объяснить, что такое ромбическая проблема (Diamond Problem)?
  32. Понимаю ли я, как интерфейсы решают проблему множественного наследования?
  33. Знаю ли я, что такое полиморфизм?
  34. Могу ли я привести пример переопределения метода?
  35. Понимаю ли я, как работает вызов переопределённого метода через ссылку на базовый класс?
  36. Знаю ли я, что такое перегрузка методов?
  37. Могу ли я отличить перегрузку от переопределения?
  38. Понимаю ли я, как компилятор выбирает, какой перегруженный метод вызвать?
  39. Знаю ли я, что такое перечисление (enum)?
  40. Могу ли я объявить и использовать перечисление в коде?
  41. Понимаю ли я преимущества перечислений перед строковыми константами?
  42. Знаю ли я, что такое коллекция и чем она отличается от массива?
  43. Могу ли я объяснить, как коллекции поддерживают полиморфизм?
  44. Понимаю ли я, как коллекции связаны с инкапсуляцией?
  45. Знаю ли я, что происходит при создании объекта (этапы инициализации)?
  46. Могу ли я описать, как работает сборка мусора в отношении объектов?
  47. Понимаю ли я, что такое фабричный метод и когда его использовать?
  48. Знаю ли я, как обеспечить, чтобы все потомки реализовали определённый метод?
  49. Могу ли я спроектировать простую иерархию классов с использованием всех четырёх принципов ООП?
  50. Понимаю ли я, когда ООП уместен, а когда другие парадигмы могут быть предпочтительнее?

Освоение главы0%